package com.wangzhen.spring.i18n;

import java.util.Locale;
import java.util.ResourceBundle;

/**
 * 演示ResourceBoundle使用方法
 * 1、通过ResourceBoundle来绑定指定配置文件，并可以指定Locale来读取指定语言的配置文件
 */
public class ResourceBundleTest {

    public static void main(String[] args) {
        // 输出默认的Locale
        Locale zhCn = new Locale("zh", "CN");
        Locale enUs = new Locale("en", "US");
        System.out.println(Locale.getDefault());
        // 1、ResourceBundle.getBundle("my") 的作用是：加载my.properties/my_en_US.propertes/my_zh_CN.properties
        // 2、getBundle(String baseName) 这个baseName很有意思，
        //     默认返回的是my + Locale.getDefault() 也就是 my_zh_CN.properties
        // 3、输出 myBoundle.getString("address") 这一行也比较有意思，这个address只有在my.properties中才有该属性值
        //  另外两个配置文件是没有的，当"my_"+Locale.getDefault+".properties" 中不存在key时，
        //  使用my.properties作为一个默认的兜底实现
        ResourceBundle myBoundle = ResourceBundle.getBundle("my");
        System.out.println("defalut Locale name =" + myBoundle.getString("name"));
        System.out.println("defalut Locale address =" + myBoundle.getString("address"));
        // 4、读取指定Locale下的配置文件，同样如果key不存在，会使用my.properties作为一个兜底
        myBoundle = ResourceBundle.getBundle("my", Locale.US);
        System.out.println("Locale.US name =" + myBoundle.getString("name"));
        System.out.println("Locale.US address =" + myBoundle.getString("address"));


        // 5、使用ResourceBoundle读取指定目录下的properties文件
        // maven 工程要在build标签下添加配置，否则此properties不会编译到classes目录
        ResourceBundle shopcart = ResourceBundle.getBundle("com.wangzhen.spring.i18n.shopcart");
        System.out.println(shopcart.getString("cancel.tips"));
    }
}
